<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>let与const</title>
</head>
<body>
    
</body>
<script>
    //es5   用var
    // var num = 10
    // var num = 20
    // console.log(num);

    //es 6 let与const
    //一、用let声明变量
    // 1、let 不允许重复声明变量  var可以
    // 2、let 不允许声明提升   var可以
    // 3、let 声明支持代码块（作用域） var不受限制
    // 4、let 声明的变量不会挂载到顶层对象 var会挂载到顶层对象

    // let num = 10
    // let num = 20

    // console.log(num);
    // let num = 2;


    // if(true){
    //     var num = 20;
    // }

    // console.log(window.num)

    // var num = 10

    // let num2 = 20

    // console.log(window.num);
    // console.log(window.num2);


    // 二、const声明常量
    // const与var
    // 1、const 不允许重复声明变量  var可以
    // 2、const 不允许声明提升   var可以
    // 3、const 声明支持代码块（作用域） var不受限制
    // 4、const 声明的变量不会挂载到顶层对象 var会挂载到顶层对象
   
        // const与let
        // 1、let声明可以不赋值    const声明必须赋值
        // 2、let声明变量可以被更改    const声明常量不能修改
        // 3、const声明对象不能修改，但是可以修改里面的键值对（属性）


        // let num;
        // num=20
        // console.log(num);
        // const num=30;
        // num=40
        // console.log(num);

        const obj={
            a:1,
            b:2
        }
        obj.a = 20
        
        console.log(obj);

</script>
</html>